package com.hsm2;
import java.util.LinkedList;
class Demo{
  LinkedList l1 = new LinkedList();
}
public class MyLinkListed {
    //链中肯定有一个首节点
    Node first;
    //链中也肯定有一个尾节点
    Node last;
    //计数器
    int count = 0;
    //提供构造器
    public MyLinkListed(){
    }
    //添加元素的方法
    public void add(Object o){

        //如果链中的第一个节点是空的话，就要将第一个节点设为首节点，并将当前链中的首节点和尾节点都变成n
        if(first==null){
            //首先将创建的节点封装成为一个对象
            Node n = new Node();
            n.setPre(null);
            n.setObj(o);
            n.setNext(null);
            //设置首尾节点
            first = n;
            last = n;
        }
        else{
            //首先将创建的节点封装成为一个对象
            Node n = new Node();
            //n的上一个节点一定是链中的最后一个节点last
            n.setPre(last);
            n.setObj(0);
            n.setNext(null);
            //很重要：n.setPre(last);是下一个元素的上一个指向当前节点（未加新元素时候）；
            //那么下一个元素的上一个也要指向当前节点
            last.setNext(n);
            //设置首尾节点
            last = n;
        }
        count ++;
    }
  public int getSize(){
        return count;
  }
  //获得相应的下标的元素
  public Object get(int index){
        //获取链表的头元素
        Node n = first;
        for(int i = 0;i<index;i++){
            n = n.getNext();
        }
        return n.getObj();
  }
}
  class Test{
    public static void main(String[] args) {
        //创建一个MyLinkListed集合对象
        MyLinkListed ml = new MyLinkListed();
        ml.add("aa");
        ml.add("bb");
        ml.add("cc");
        System.out.println(ml.getSize());
    }
}
